const obj = { a: 1, b: 2, c: 3 }
const target = { a: 1, b: 2 }
const source = { b: 4, c: 5 }

//Object.assign({}, obj) // 浅拷贝或合并多个对象
//const values = Object.values(obj) //返回一个数组，包含对象中所有可枚举属性的值。
//const keys = Object.keys(obj) //返回一个数组，包含对象中所有可枚举属性的名称。
//const entries = Object.entries(obj) //返回一个数组，包含对象中所有可枚举属性的键值对。
//console.log(Object.getOwnPropertyNames(obj)) //返回一个数组，包含对象中所有自身属性的名称（不包括继承的属性）。
//console.log(obj.hasOwnProperty('a')) //判断对象是否包含指定属性（不包括继承的属性），返回布尔值。

//Object.freeze(obj) //冻结对象，防止对其进行修改，返回被冻结的对象。被冻结的对象的属性不可更改、删除或添加。
// Object.seal(obj) //类似冻结，但是可以修改属性，区别是不能删除对象的属性。
//Object.defineProperty() //允许你定义一个对象的属性，包括它的值、是否可枚举、是否可配置等等
const createObj = Object.create({ a: 1 }) //创建一个新对象，参数1是新对象的原型
//console.log(keys)
//console.log(values)
//console.log(entries)
//console.log(obj)

console.log(createObj.a)


console.log(Object.getPrototypeOf(obj));// 获取对象的原型